package cn.humaohua.study.yanmo_design_pattern.ch07;

public class ComputerEngineer {

    /**
     * 定义组装电脑需要的CPU
     */
    private CPUApi cpuApi = null;

    /**
     * 定义组装电脑需要的主板
     */
    private MainboardApi mainboardApi = null;

    /**
     * 组装电脑
     */
    public void makeComputer(AbstractFactory schema) {
        // 1首先准备好装机需要的硬件
        prepareHardware(schema);
        // 2组装电脑
        // 3测试
        // 4交付客户
    }

    private void prepareHardware(AbstractFactory schema) {
        // 这里要准备CPU和主板的具体实现，为了示例简单，这里只准备这两个
        // 可是，装机工程师并不知道如何去创建，怎么办呢？

        // 使用抽象工厂来获取相应的接口对象
        this.cpuApi = schema.createCPUApi();
        this.mainboardApi = schema.createMainboardApi();

        // 测试一下配件是否好用
        this.cpuApi.calculate();
        this.mainboardApi.installCPU();

    }
}
